Multi-point feedback control for touchpads

ABSTRACT

A system and method for dynamically cancelling haptic feedback in certain areas of a touchpad, and/or to dynamically isolating haptic feedback in certain areas of the touchpad, may enhance flexibility, utility and functionality of the touchpad. A first haptic engine may generate and transmit haptic feedback in response to an input detected in an input area of the touchpad. A second haptic engine may generate haptic cancellation feedback, and transmit the cancellation feedback after a time delay, to cancel out the effect of the haptic feedback in a cancellation area of the touchpad. This may allow a user to experience the haptic feedback in response to an input in the input area, and to rest hand(s) on other portions of the touchpad display without feeling haptic feedback in the other portions of the touchpad.

FIELD

This relates, generally, to an input device for use with a computingdevice.

BACKGROUND

Computing devices include one or more user input devices that allow auser to provide inputs to the computing device. Example input devicesmay include, for example, keyboards, mouse, trackpads, touchpads, touchdisplays, microphones, touch screens, and other such input devices.Example computing devices that may make use of such input devices mayinclude, for example, portable computers, laptop computers, mobiledevices (e.g., smartphones, media players, game players, mobile phones,and the like), desktop computers, and other such computing devices.

SUMMARY

According to one general aspect, method may include detecting, by afirst sensor of a touchpad, an input at an input surface of thetouchpad; associating the detected input with an input area of thetouchpad; detecting, by a second sensor of the touchpad, a contact atthe input surface of the touchpad; associating the detected contact witha cancellation area of the touchpad; transmitting, by a first hapticengine of the touchpad, a first haptic feedback signal in response tothe detecting of the input in the input area; and transmitting, by asecond haptic engine of the touchpad, a second haptic feedback signal inresponse to the detecting of the contact in the contact area, the secondhaptic feedback signal being an inverse of the first haptic feedbacksignal.

According to another general aspect, a computer program product may beembodied on a non-transitory computer readable medium. The computerreadable medium may have stored thereon a sequence of instructionswhich, when executed by a processor, causes the processor to execute amethod, the method including detecting, by a first sensor of a touchpad,an input at an input surface of the touchpad; associating the detectedinput with an input area of the touchpad; detecting, by a second sensorof the touchpad, a contact at the input surface of the touchpad;associating the detected contact with a cancellation area of thetouchpad; transmitting, by a first haptic engine of the touchpad, afirst haptic feedback signal in response to the detecting of the inputin the input area; detecting that a set period of time has elapsed sincethe transmitting of the first haptic feedback signal; and transmitting,by a second haptic engine of the touchpad, a second haptic feedbacksignal in response to the detecting of the contact in the contact area,the second haptic feedback signal being an inverse of the first hapticfeedback signal

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a perspective view of an example computing device includingan example touchpad, in accordance with implementations describedherein.

FIG. 1B is a block diagram of an example computing device, in accordancewith implementations described herein.

FIG. 2 is a schematic illustration of an example arrangement ofcomponents of an example touchpad, in accordance with implementationsdescribed herein.

FIG. 3A is a top view of an example base portion of a computing device,in accordance with implementations described herein.

FIG. 3B is a cross-sectional view taken along line A-A of FIG. 3A.

FIG. 3C is a cross-sectional view taken along line B-B of FIG. 3A.

FIG. 4 is a top view of the example base portion shown in FIG. 3A,including a positioning of a user's hands relative to a touchpad and akeyboard of the base portion.

FIGS. 5A-5F illustrate cancellation of feedback in an example touchpad,in accordance with implementations described herein.

FIG. 6 is a flowchart of an example method that may be implemented usingmachine-readable instructions executed by one or more processors toprovide haptic feedback, in accordance with implementations describedherein.

FIG. 7 illustrates an example of a computer device and a mobile computerdevice that can be used to implement the techniques described herein.

DETAILED DESCRIPTION

Trackpads and/or touchpads of a computing device may allow a user toprovide input to the computing device through a variety of differentgestures detected at an input surface of the trackpad and/or touchpad.Detection of a user's input may, for example, cause a cursor displayedon a first display (for example, a main display of the computing device,separate from the trackpad and/or touchpad) to move accordingly, causecorresponding information, graphics and the like to be displayed on thefirst display, trigger one or more functions of the computing device,and the like. In some implementations, at least a portion of thetouchpad may include display capability, in the form of, for example, asecond display (in addition to the first, or main, display discussedabove) so that the touchpad is capable of both receiving input via usergestures applied at the input surface, and displaying output via thesecond display. Such an arrangement may, hereinafter, also be referredto as a touchpad display.

The movement of an object, such as, for example, one or more fingers, astylus, or other instrument, at an input surface of a touchpad, or atouchpad display, may be detected by, for example, a sensor positionedat, or near the input surface. This detected movement, or gesture, maybe interpreted as a command, as described above, to be implemented bythe computing device. In some implementations, the sensor(s) may detectmultiple points of contact with the input surface (for example, morethan one point of contact with the input surface or, in someimplementations, more than two points of contact with the inputsurface), and recognize the multiple points of contact as an inputcorresponding to commands to be executed by the computing device. Touchinputs may be processed to, for example, determine how many touchingimplements, such as, for example, fingers are sensed and/or how thetouching implements are pressing and/or moving on the input surface.Such touch inputs may be detected, or sensed by, for example, capacitivesensors, resistive sensors, pressure sensors, force sensors,piezoelectric sensors, and the like. For example, one or more sensor(s),or combinations of sensor(s), may detect, for example, contact of twofingers with the input surface, and movement apart of the two fingersalong the input surface, and recognize the multiple touch gestureapplied to the input surface as a zoom command. In some implementations,pressure sensor(s) may detect an input based on an amount of pressureapplied to the input surface, an interval of time for which a certainamount of pressure is sustained, and the like.

To provide the user with an indication, or confirmation, or non-visualfeedback, touchpads may provide haptic or tactile feedback as userinterface elements are navigated using the touchpad. For example, hapticfeedback may be automatically provided as a user moves (e.g., swipes,slides, etc.) their finger(s) and/or stylus across the input surface,and/or as particular elements are selected and/or actuated based on thegestures detected at the input surface.

An example computing device 100, or portable computing device 100, isshown in FIG. 1A. The example computing device 100 shown in FIG. 1Aincludes a display portion 102 rotatably coupled to a base portion 104.The base portion 104 may include a keyboard 106 including one or morekeys, and a touchpad 108. In some implementations, the touchpad 108 maybe a touchpad display 108, including input components that areresponsive to touch inputs applied to an input surface of the touchpaddisplay 108, and display components to display output at the surface ofthe touchpad display 108. In the example arrangement shown in FIG. 1A,the keyboard 106 and the touchpad 108 occupy an upper surface 104A ofthe base portion 104, with the keyboard 106 occupying a first section ofthe upper surface 104A of the base portion 104, and the touchpad 108occupying a second section of the upper surface 104A of the base portion104. In the example shown in FIG. 1A, the touchpad 108 extendssubstantially across the full width of the base portion 104 of thecomputing device 100, for example, from a left peripheral portion to aright peripheral portion of the base portion 104.

The relatively large surface area of the exemplary touchpad 108 shown inFIG. 1A may provide for enhanced functionality of the touchpad 108. Forexample, in some implementations, the relatively large surface area ofthe exemplary touchpad 108 may accommodate the input and recognition ofan expanded variety of gesture inputs applied to the input surface ofthe touchpad 108. This may expand the utility of the touchpad 108 intoapplications, such as, for example, graphics design applications and thelike, which may benefit from the ability to input relatively long,continuous touch and drag type inputs, and the like. In someimplementations, the relatively large surface area of the exemplarytouchpad 108 may allow the touchpad 108 to simultaneously accommodatetouch input functionality and display output functionality.

The touchpad 108 may include the ability to provide tactile, or haptic,feedback to the user, whether the touchpad 108 includes only touch inputfunctionality, or both touch input functionality and display outputfunctionality as in a touchpad display. This haptic feedback may providephysical feedback to the user related to, for example, a selection, anaction, a position on the input surface and the like. This hapticfeedback may augment, or replace the mechanical, or clicking, actionsometimes associated with a mechanical trackpad/touchpad for providingphysical user feedback. In an arrangement in which the touchpad 108 isrelatively large (for example, extending substantially the full width ofthe computing device 100 as in the example shown in FIG. 1A), the usermay, in some circumstances, rest portion(s) of the user's hands on thetouchpad 108 while, for example, providing input via the keyboard 106and/or the touchpad 108. If, while in this position, haptic feedback(generated as inputs are detected by the touchpad 108) was felt by theuser's hands resting on the touchpad 108 (rather than just at the pointof entry of the input at the input surface), this may cause the usersome discomfort, or distraction, or confusion. The ability to isolatehaptic feedback experienced by the user to the point(s) of input mayprovide the user with physical feedback confirming a specified input,without causing discomfort or distraction due to additional hapticfeedback experienced in the hands. In an arrangement in which thetouchpad 108 is a touchpad display, this could be achieved bysegregating a touchpad input area of the touchpad 108 from a displayarea of the touchpad display 108. However, segregating, or segmenting,the touchpad 108 in this manner would add cost and/or complexity to thetouchpad 108, and/or would limit the flexibility that would otherwise beprovided by the relatively large surface area of the touchpad 108.

FIG. 1B is a block diagram of an example computing device, such as, forexample, the computing device 100 shown in FIG. 1A. The examplecomputing device 100 may include, for example, a processor/controller1110 invoking an operating system 1120 and a storage device or memory1130 to run various applications 1140. The computing device 100 may alsoinclude one or more output devices 1150 (such as, for example, adisplay, an audio output device including, for example, a speaker and/ora headphone port, and the like). The computing device 100 may alsoinclude one or more input devices 1170 (such as, for example, akeyboard, a touchpad, an audio input device including, for example, amicrophone, an image capturing device and the like), and an interfacedevice 1190 including, for example a communication port and/or interfaceport such as, for example, one or more USB ports, HDMI ports and thelike, and other such components. The processor 1110 may process inputreceived from the one or more input devices 1170 for execution and/oroutput via the one or more output devices 1150.

A system and method, in accordance with implementations describedherein, may generate specific haptic feedback for the user, whileminimizing usage differences between a touchpad providing hapticfeedback and mechanical trackpads/touchpads providing mechanicalfeedback. For example, a system and method, in accordance withimplementations described herein, may produce haptic feedback in atouchpad area of a touchpad that is received by the user, whilecancelling out haptic feedback in other areas of the touchpad. Thesystem and method may provide for isolation of haptic feedback,particularly in a full width touchpad, or touchpad display, employinghaptic feedback motor(s) rather than mechanical clicking mechanisms.

Hereinafter, references to the touchpad 108 will include touchpadshaving touch input functionality, and touchpad displays having bothtouch input functionality and display output functionality. FIG. 2 is aschematic diagram of an exemplary arrangement of components of theexample touchpad 108 included in the example computing device 100 shownin FIG. 1A. As shown in FIG. 2, the touchpad 108 may include a toucharea 208, or a touch-display area 208 for a touchpad display, withinwhich the touchpad 108 is capable of both receiving input via usergestures applied at the input surface, and displaying output in the caseof the touchpad display. In some implementations, a display panel mayextend across substantially the entirety of the touch-display area 208.In some implementations, a capacitive touch layer including, forexample, a capacitive touch sensor, may extend across substantially theentirety of the touch-display area 208. These features will be discussedin more detail with respect to FIGS. 3A-3C.

As illustrated in the example shown in FIG. 2, a plurality of pressuresensors 220 and a plurality of haptic engines 240 may be arranged in atouch-display area 208 of the touchpad 108. In the example arrangementshown in FIG. 2, a first pressure sensor 220A is positioned at a firstcorner portion of the touch-display area 208, a second pressure sensor220B is positioned at a second corner portion of the touch-display area208, a third pressure sensor 220C is positioned at a third cornerportion of the touch-display area 208, and a fourth pressure sensor 220Dis positioned at a fourth corner portion of the touch-display area 208.The touchpad 108 may include more, or fewer, pressure sensors 220, invarious different arrangements and/or in various different positions, orcombinations of positions, in the touch-display area 208. In the examplearrangement shown in FIG. 2, a first haptic engine 240A is positioned ata first lateral portion of the touch-display area 208, a second hapticengine 240B is positioned at a second lateral portion of thetouch-display area 208, and a third haptic engine 240C is positioned ata central portion of the touch-display area 208. The example arrangementshown in FIG. 2 includes three haptic engines 240, simply for purposesof discussion and illustration. However, the touchpad 108 may include asfew as two haptic engines 240, or more than three haptic engines 240, invarious different arrangements and/or in various different positions, orcombinations of positions, in the touch-display area 208.

The multiple haptic engines 240, for example, at least two hapticengines 240, or, for example, three haptic engines 240 as shown in theexample in FIG. 2, may allow destructive wave interference to beimplemented between adjacent haptic engines 240. This destructive waveinterference between the two adjacent haptic engines 240 may create,essentially, a line (for example, in the area between the two adjacenthaptic engines 240) along the touchpad 108 where no haptic feedback isexperienced by the user. The ability to isolate haptic feedback to beexperienced by the user to certain areas, depending on where the userapplies a touch input, may be particularly useful in a case in which thedisplay portion of the touchpad display 108 extends along essentiallythe full width of the computing device 100, as illustrated in theexample shown in FIG. 1A.

In a full width touchpad 108, the ability to isolate haptic feedback inthis manner may allow a user to, for example, rest portions of theuser's hand(s) on the touchpad 108 (see FIG. 4) while, for example,using the keyboard 106 and/or touchpad 108 to provide input, withoutexperiencing undue haptic feedback at the portion(s) of the user'shand(s) resting on the touchpad 108. Rather, haptic feedback may beisolated to, and experienced by the user, at the point of input. In thismanner, the haptic feedback may provide the user with physical feedbackconfirming a specified input, without causing discomfort due toadditional haptic feedback experienced in the hands.

The multiple pressure sensors 220, distributed in the touch-display area208 of the touchpad 108, for example, in the exemplary mannerillustrated in FIG. 2, may detect a position, or location, or where onthe input surface, an input was applied to the touchpad 108. Forexample, the multiple pressure sensors 220 may detect where the touchpad108 was pressed, or clicked, or tapped, or other such entry detected atthe input surface of the touchpad 108. The multi-touch detectioncapability of the touchpad 108 may detect where the user's hand(s) areresting on the touchpad 108 (see, for example, FIG. 4). The data sensedby the multiple distributed pressure sensors 220 (related to userinputs) and the multi-touch detection capability of the touchpad 108 (todetect the position of the user's hand(s) resting on the touchpad 108),may allow the system to determine an area in which wave cancellation(between adjacent haptic engines 240) should be generated, to avoidtransmission of haptic feedback to the user's hands resting on thetouchpad 108.

FIG. 3A is a top view of a base portion of a computing device, such as,for example, the base portion 104 of the exemplary computing device 100shown in FIG. 1A. FIG. 3B is a cross-sectional view of the base portion104, taken along line A-A of FIG. 3A, and FIG. 3C is a cross-sectionalview of the base portion 104, taken along line B-B of FIG. 3 A.

In the example base portion 104 of the computing device shown in FIGS. 1and 3A-3C, the exemplary keyboard 106 is a physical keyboard includingkeys, with the keyboard 106 and the touchpad 108 occupying separatesections of the upper surface 104A of the base portion 104, simply forpurposes of discussion and illustration. However, the principlesdescribed herein may be applied to other arrangements of input deviceson a computing device. For example, in some implementations, thetouchpad 108 may occupy a larger section of the upper surface 104A ofthe base portion 104, for example, a majority of the upper surface ofthe upper surface 104A of the base portion 104. When the touchpad 108occupies the majority of the upper surface 104A of the base portion 104,the touchpad 108 may define a single input device, or input surface,including a keyboard input interface and a touchpad input interface,along with display capability. In this arrangement, the keyboard 106 maybe a virtual keyboard that is displayed on a portion of the touchpad108, with the virtual keyboard 106 including virtual keyboard elements(e.g., virtual keys), and the touchpad 108 detecting user key selectionscorresponding to touch inputs detected at the virtual elements of thevirtual keyboard 106 displayed on the touchpad 108.

The example base portion 104 shown in FIGS. 3A-3C includes the touchpad108 having a plurality of pressure sensors 220 (in this examplearrangement, pressure sensors 220A, 220B, 220C and 220D) and a pluralityof haptic engines 240 (in this example arrangement, haptic engines 240A,240B and 240C), simply for purposes of discussion and illustration.However, principles to be described herein may be applied to a touchpaddisplay 108 having more, or fewer pressure sensors 220, and/or havingmore, or fewer, haptic engines 240, and/or in different arrangementswithin the touchpad 108.

As shown in FIGS. 3A-3C, the example touchpad 108 includes a first layer110, or an outer layer 110, or a cover layer 110, defining an inputsurface at an exterior facing surface 110A of the touchpad 108. A secondlayer 120 may be positioned adjacent to an interior facing surface 110Bof the first layer 110. The first layer 110 may be, for example,transparent layer, or a glass layer including a sensor, such as, forexample, a capacitive sensor. The second layer 120 may include a displaypanel. Images displayed on the display panel of the second layer 120 maybe visible through the transparent (e.g., glass) first layer 110. Thesensor(s) included in the first layer 110 may detect contact (forexample, with a capacitive object such as a portion of the user'shand(s) resting on the touchpad display 108) at the exterior facingsurface 110A of the first layer 110.

Pressure sensors 220 (for example, the first, second, third and fourthpressure sensors 220A, 220B, 220C and 220D) may be positioned adjacentto an interior facing surface 120B of the second layer 120. Theexemplary touchpad 108 shown in FIGS. 3A-3C includes four pressuresensors 220A, 220B, 220C and 220D, respectively positioned at fourcorner portions of the touchpad 108. Haptic engines 240 (for example,the first, second and third haptic engines 240A, 240B and 240C) may bepositioned adjacent to the interior facing surface 120B of the secondlayer 120. The exemplary touchpad 108 shown in FIGS. 3A-3C includes thefirst haptic engine 240A positioned at the first lateral portion of thetouchpad 108, the second haptic engine 240B positioned at the secondlateral portion of the touchpad 108, and the third haptic engine 240Cpositioned at the central portion of the touchpad 108.

As noted above, the sensor(s) included in the first layer 110 of thetouchpad 108 may provide the touchpad 108 with multi-touch detectioncapability. In this manner, the system may determine a position of theuser's hands, or palms, on the touchpad 108. As also noted above, thepressure sensors 220 may detect where an input has been made, or where aclick has been applied to the touchpad 108. This determination may bemade based on, for example, an amount of pressure detected by thepressure sensors 220, and/or an interval during which the detectedpressure is sustained, and/or a location on the touchpad display atwhich the pressure is detected, and the like.

Thus, in the example illustrated in FIGS. 3A-3C and 4, the system maydetect the hands of the user resting on the touchpad 108 as shown inFIG. 4, with the left hand of the user positioned between the firsthaptic engine 240A and the third haptic engine 240C, and the right handof the user positioned between the second haptic engine 240B and thethird haptic engine 240C. The third haptic engine 240C, at the centralportion of the touchpad 108, may be actuated in response to a detectedinput, to generate haptic feedback. Based on the detected position ofthe hands of the user, the first haptic engine 240A and the secondhaptic engine 240A may also be actuated to generate haptic feedback, tocause the vibrations generated by the haptic feedback of the thirdhaptic engine 240A to be cancelled out.

For example, in response to a detected input at the touchpad 108, or anintended click on the touchpad 108, which would typically cause thetouchpad 108 to provide physical, haptic, feedback to the user, thethird haptic engine 240C may be actuated. Vibration associated with thehaptic feedback generated by the third haptic engine 240C may attenuate,for example, outward from the third haptic engine 240C across thetouchpad 108. For example, vibration due to the haptic feedbackgenerated by the third haptic engine 240C may attenuate outward from thethird haptic engine 240C, toward the first haptic engine 240A, andtoward the second haptic engine 240B. Without any type of cancellationeffects, this vibration due to the haptic feedback generated by thethird haptic engine 240C would be experienced, or felt by the hands ofthe user resting on the touchpad 108. This haptic feedback at the user'shands would be extraneous, or irrelevant, or disconnected from/notrelated to the input for which the haptic feedback is generated, thuscausing the user possible discomfort, distraction and the like.

In some implementations, the first haptic engine 240A and/or the secondhaptic engine 240B may be actuated, so that this vibration due to thehaptic feedback generated by the third haptic engine 240C is not feltby, for example, the left hand of the user positioned between the firsthaptic engine 240A and the third haptic engine 240C, and/or the righthand of the user positioned between the second haptic engine 240B andthe third haptic engine 240C (as detected by the multi-touch sensor ofthe touchpad 108). For example, vibration generated due to hapticfeedback generated by the first haptic engine 240A may attenuateoutward, from the first haptic engine 240A, toward the third hapticengine 240C. A meeting, or intersection, of an attenuation path, or awave, associated with the vibration from the first haptic engine 240Aand an attenuation path, or wave, associated with the vibration from thethird haptic engine 240C, may cause the vibration from the first hapticengine 240A and the vibration from the third haptic engine 240C tocancel each other out, so that vibration is not felt by the left hand ofthe user. Similarly, a meeting, or intersection, of an attenuation path,or a wave, associated with the vibration from the second haptic engine240B and an attenuation path, or wave, associated with the vibrationfrom the third haptic engine 240C, may cause the vibration from thesecond haptic engine 240B and the vibration from the third haptic engine240C to cancel each other out, so that vibration is not felt by theright hand of the user.

The cancellation effect generated in this mode of operation of thehaptic engines 240 may be considered in terms of, for example, wavesgenerated by the haptic engines 240. That is, a first wave generated bythe first haptic engine 240A, and a second wave generated by the secondhaptic engine 240B, may each be the inverse of a third wave generated bythe third haptic engine 240C. In this manner, the first wave generatedby the first haptic engine 240A may cancel out the third wave generatedby the third haptic engine 240C. Similarly, the second wave generated bythe second haptic engine 240B may cancel out the third wave generated bythe third haptic engine 240C.

In some implementations, a frequency and/or an amplitude of the outputof one or more of the haptic engines 240 may be adjusted so thatcancellation occurs at the detected point at which the hand(s) of theuser contact the touchpad display 108. This fine tuning of the output ofthe haptic engines 240 may take into account numerous factors, such as,for example, a type of output being generated, a magnitude of the outputnecessary to be detected, or felt, by the user, a material through whichthe output is to travel (and associated propagation speed through thatmaterial), positioning of the hand(s) of the user on the touchpad 108relative to the arrangement of the haptic engines 240, and other suchfactors. This fine tuning of the output of the haptic engines 240 mayallow for cancellation of the vibratory effects generated by the hapticengines 240 only within certain areas, while the vibratory effects maystill be experienced by the user in other area(s) of the touchpaddisplay 108 associated with a particular input warranting the physical,haptic feedback.

An example of this cancellation effect is illustrated in FIGS. 5A and5B. In the example shown in FIG. 5A, an input area 1, or a click area 1,is identified between the first haptic engine 240A and the third hapticengine 240C, and a cancellation area 2 is identified between the secondhaptic engine 240B and the third haptic engine 240C. A distance Ad isdefined between the first haptic engine 240A and the third haptic engine240C. In this particular example, the first haptic engine 240A maygenerate feedback to be conveyed into the click area 1. The feedbackgenerated by the first haptic engine 240A may be represented by theexample waveform A shown in FIG. 5B. This feedback generated by thefirst haptic engine 240A may continue to propagate along the length ofthe touchpad 108, through the click area 1, and into the cancellationarea 2. To cancel the effects of the feedback generated by the firsthaptic engine in the cancellation area 2, the third haptic engine 240Cmay generate feedback, after a period of time At has elapsed. Thefeedback generated by the third haptic engine 240C may be the inverse ofthe feedback generated by the first haptic engine 240A, thus cancellingout the effects of the feedback in the cancellation area 2. The feedbackgenerated by the third haptic engine 240C may be represented by theexample waveform C shown in FIG. 5B. The example waveform C may be theinverse of the example waveform A. As shown in FIG. 5A, cancellationeffects may be strongest in the darker shaded regions of thecancellation area 2. Effective cancellation of feedback in thecancellation area 2 may rely on the determination of At to determine thecancellation point. If v is the propagation speed of the feedbackthrough the material of the touchpad display 108, the period of time Atmay be determined by Equation 1.

Δt=Δd/v   Equation 1:

FIG. 5C illustrates an example in which the click area 1 and thecancellation area 2 are both between the first haptic engine 240A andthe third haptic engine 240C. In this example, a first distance d₁defines a distance between the first haptic engine 240A and thecancellation area 2, and a second distance d₂ defines a distance betweenthe cancellation area 2 and the third haptic engine 240C. A thirddistance d₃ defines a distance between the click area 1 and thecancellation area 2. In this instance, Δt may be determined by Equation1, and Δd may be determined by Equation 2.

Δd=d ₁ −d ₂   Equation 2:

In the example shown in FIG. 5C, the first haptic engine 240A maygenerate feedback to be conveyed into the click area 1. To cancel theeffects of the feedback generated by the first haptic engine 240A thatpropagate into the cancellation area 2, the third haptic engine 240C maygenerate feedback, after the period of time At has elapsed. The feedbackgenerated by the third haptic engine 240C may be the inverse of thefeedback generated by the first haptic engine 240A, thus cancelling outthe effects of the feedback as the feedback approaches the cancellationarea 2. In the examples shown in FIGS. 5A and 5C, the click area 1 andthe cancellation area 2 are essentially in line with each other, simplyfor ease of discussion and illustration. FIGS. 5D and 5E illustrateexamples in which the click area 1 and the cancellation area 2 are notin line with each other. In the example shown in FIG. 5D, the click area1 is between the first haptic engine 240A and the third haptic engine240C, and the cancellation area 2 is between the second haptic engine240B and the third haptic engine 240C. In the example shown in FIG. 5Ethe click area 1 and the cancellation area 2 are both between the firsthaptic engine 240A and the third haptic engine 240C. In the examplearrangements shown in FIGS. 5D and 5E, Δt may be determined by Equation1 (as described above), and Δd may be determined by Equation 2 (asdescribed above).

in any of these examples, the materials, properties and the like of thetouchpad 108 may dampen the effect of the vibration associated with thehaptic feedback generated by the haptic engine 240, and in particularthe ability of the user to detect, or feel, the vibration at the clickarea 1. In some implementations, an amplitude of the vibrationassociated with the haptic feedback generated by the haptic engine(s)240 may increase as the haptic feedback signal, or wave, propagates awayfrom the haptic engine 240 toward the click area 1, as shown in FIG. 5F,so that the vibration associated with the haptic feedback is perceptibleat the click area 1. In this example, the amplitude of the hapticfeedback associated with the cancellation signal, or cancellationvibration, is also increased as the cancellation signal, or wave,propagates away from the haptic engine 240 toward the cancellation area2, so that the vibration is not perceptible in the cancellation area 2.

In the example shown in FIG. 5F, the first waveform A (generated by thefirst haptic engine 240A) has a first amplitude x1, and the secondwaveform C (generated by the third haptic engine 240C) has an amplitudex₂. The time t₁, at which the waveform A reaches the click area 1 may bedetermined by the Equation 3. The time t₂ at which the second waveform Creaches the click area 1 may be determined by the Equation 4. In thisexample, the time period Δt, for waveforms having increasing amplitudesas described above with respect to FIG. 5F, may be determined by theEquation 5.

t ₁=(d ₁ −d ₃)/v   Equation 3:

t ₂=(d ₁ −d ₂)/v+(d ₂ +d ₃)/v=(d ₃ +d ₁)/v   Equation 4

Δt/=t ₂ −t   Equation 5

Thus, in the click area 1, the amplitude x_(i) of the first waveform Awill be greater than the amplitude x₂ of the second (cancellation)waveform C. When the first waveform A and the second (cancellation)waveform C meet at the click area 1, the second (cancellation) waveformC had to travel the additional distance d₃ (the distance d₃ between theclick area 1 and the cancellation area 2 as described above) beforereaching the click area 1. Thus, in this scenario, the second(cancellation) waveform C is offset by a total of −2*d₃/v with respectto the first waveform A. Thus, in addition to the first waveform A andthe second (cancellation) waveform C being offset, the amplitude x₂ ofthe second (cancellation) waveform C may be lower than the amplitude x₁of the first waveform A when they meet in the click area 1. In thismanner, by taking into consideration the distance d between the clickarea 1 and the cancellation area 2, increasing the amplitude of thehaptic feedback pulse, and timing the generation of the cancellationfeedback pulse accordingly, cancellation effects will be reduced at theclick area 1, so that haptic feedback is perceptible to the user at theclick area 1, and not perceptible to the user at the cancellation area2.

As noted above, essentially complete cancellation may be achieved withan accurate determination of Δt and propagation of the cancellationfeedback along the corresponding vector. In some implementations,effective dampening may be achieved, even when cancellation feedbackthat does not strictly follow the corresponding vector. For example, anoffset of, for example, π/8 between the propagation of the feedback wave(for example, the waveform A as described above) and the propagation ofthe feedback cancellation wave (for example, the waveform C as describedabove) may produce a dampening effect of approximately 60% or greater,particularly when propagating through a material such as the glass ofthe touchpad display 108.

In some implementations, an additional time offset may be applied to thetransmission of the second waveform C (i.e., the cancellation wave), tofurther decrease the cancellation effect in the click area 1 (i.e., toincrease the amount of haptic feedback experienced by the user in theclick area 1). In some situations, this may also increase the effect ofthe haptic feedback in the cancellation area 2. The effect of the secondwaveform C (i.e., the cancellation wave) in the click area 1, and theeffect of the haptic feedback associated with the first waveform A inthe cancellation area 2 generated by a particular time offset may bebalanced based on, for example, a particular work environment,application, user preferences, and the like. Similarly, In somesituations, the dampening properties of the material of the touchpad108, and/or the minimum threshold of amplitude that may be perceptibleby the user in the cancellation area 2, may allow for an additionalsmall time offset to be applied to the transmission of the secondwaveform C (i.e., the cancellation wave), without an appreciabledifference notice by the user in the cancellation area 2.

The ability to dynamically cancel haptic feedback in certain areas ofthe touchpad 108, and/or to dynamically isolate, haptic feedback incertain areas of the touchpad 108 enhances flexibility, utility andfunctionality of the touchpad 108. That is, the ability to dynamicallycontrol haptic feedback in certain areas of the touchpad 108 allow inputareas and output areas of the touchpad 108 to be dynamicallyinterchangeable. That is, areas of the touchpad 108 are no longerlimited to either input receiving capability or output displaycapability. Rather, essentially the entirety of the touchpad 108 canfunction to display output to the user, and essentially the entirety ofthe touchpad 108can function to receive input from the user, without theuser experiencing undue haptic feedback.

An example method 600 is shown in FIG. 6. The example method may beperformed to provide haptic feedback, and to dynamically cancel, and/ordynamically isolate, haptic feedback, in accordance with implementationsdescribed herein. A computing device, such as, for example, the examplecomputing device 100 including the touchpad 108 as described above, isoperated (block 610), and it is determined whether an input has beendetected in an input area of the touchpad (block 620). The detection ofan input in the input area may be, for example, a touch input by a userat or near an input surface of the touchpad. It is then determinedwhether contact with the touchpad is detected in an area other than theinput area (block 630). If contact is not detected in an area other thanthe input area, then haptic feedback may be generated to provide aphysical indication, or physical feedback, of the detected input in theinput area (block 635). This haptic feedback may be generated andtransmitted by, for example, a first haptic engine included in thetouchpad.

The detection of contact in an area other than the input area may be acontact by, for example, a sensor, for example, a multi-touch capacitivesensor, of the touchpad, that is recognized as, for example, portion(s)of a hand of a user resting on the touchpad. Detection of such contactin an area outside of the input area may define a cancellation point, orcancellation area, in which haptic feedback (for example, the hapticfeedback to be generated by the first haptic engine in response to thedetected input in the input area) is to be cancelled. In response todetection of contact in an area other than the input area (block 630), apoint at which the contact is detected may be set as a cancellationpoint, or a cancellation area, and a time delay At may be set fortransmission of haptic cancellation feedback by a second haptic engine(block 640). Haptic feedback may be generated, by for example, the firsthaptic engine included in the touchpad, to provide a physicalindication, or physical feedback, of the detected input in the inputarea (block 650). After the time delay At has elapsed (block 660),haptic cancellation feedback may be generated by, for example, a secondhaptic engine included in the touchpad, to cancel the effect of thehaptic feedback (generated by the first haptic engine) in thecancellation area (block 670). The haptic cancellation feedbackgenerated and transmitted by the second haptic engine may be the inverseof the haptic feedback generated and transmitted by the first hapticengine, so that the effect of the haptic feedback from the first hapticengine is cancelled out as it meets the haptic feedback from the secondhaptic engine in the cancellation area. This process may continue untilit is determined that a session is complete (block 680).

FIG. 7 illustrates an example of a computer device 2000 and a mobilecomputer device 2050, which may be used with the techniques describedhere. Computing device 2000 includes a processor 2002, memory 2004, astorage device 2006, a high-speed interface 2008 connecting to memory2004 and high-speed expansion ports 2010, and a low speed interface 2012connecting to low speed bus 2014 and storage device 2006. Each of thecomponents 2002, 2004, 2006, 2008, 2010, and 2012, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 2002 can processinstructions for execution within the computing device 2000, includinginstructions stored in the memory 2004 or on the storage device 2006 todisplay graphical information for a GUI on an external input/outputdevice, such as display 2016 coupled to high speed interface 2008. Inother implementations, multiple processors and/or multiple buses may beused, as appropriate, along with multiple memories and types of memory.Also, multiple computing devices 2000 may be connected, with each deviceproviding portions of the necessary operations (e.g., as a server bank,a group of blade servers, or a multi-processor system).

The memory 2004 stores information within the computing device 2000. Inone implementation, the memory 2004 is a volatile memory unit or units.In another implementation, the memory 2004 is a non-volatile memory unitor units. The memory 2004 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 2006 is capable of providing mass storage for thecomputing device 2000. In one implementation, the storage device 2006may be or contain a computer-readable medium, such as a floppy diskdevice, a hard disk device, an optical disk device, or a tape device, aflash memory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 2004, the storage device2006, or memory on processor 2002.

The high speed controller 2008 manages bandwidth-intensive operationsfor the computing device 2000, while the low speed controller 2012manages lower bandwidth-intensive operations. Such allocation offunctions is exemplary only. In one implementation, the high-speedcontroller 2008 is coupled to memory 2004, display 2016 (e.g., through agraphics processor or accelerator), and to high-speed expansion ports2010, which may accept various expansion cards (not shown). In theimplementation, low-speed controller 2012 is coupled to storage device2006 and low-speed expansion port 2014. The low-speed expansion port,which may include various communication ports (e.g., USB, Bluetooth,Ethernet, wireless Ethernet) may be coupled to one or more input/outputdevices, such as a keyboard, a pointing device, a scanner, or anetworking device such as a switch or router, e.g., through a networkadapter.

The computing device 2000 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 2020, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 2024. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 2022. Alternatively, components from computing device 2000 maybe combined with other components in a mobile device (not shown), suchas device 2050. Each of such devices may contain one or more ofcomputing device 2000, 2050, and an entire system may be made up ofmultiple computing devices 2000, 2050 communicating with each other.

Computing device 2050 includes a processor 2052, memory 2064, aninput/output device such as a display 2054, a communication interface2066, and a transceiver 2068, among other components. The device 2050may also be provided with a storage device, such as a microdrive orother device, to provide additional storage. Each of the components2050, 2052, 2064, 2054, 2066, and 2068, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 2052 can execute instructions within the computing device2050, including instructions stored in the memory 2064. The processormay be implemented as a chipset of chips that include separate andmultiple analog and digital processors. The processor may provide, forexample, for coordination of the other components of the device 2050,such as control of user interfaces, applications run by device 2050, andwireless communication by device 2050.

Processor 2052 may communicate with a user through control interface2058 and display interface 2056 coupled to a display 2054. The display2054 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid CrystalDisplay) or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 2056 may compriseappropriate circuitry for driving the display 2054 to present graphicaland other information to a user. The control interface 2058 may receivecommands from a user and convert them for submission to the processor2052. In addition, an external interface 2062 may be provide incommunication with processor 2052, so as to enable near areacommunication of device 2050 with other devices. External interface 2062may provide, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 2064 stores information within the computing device 2050. Thememory 2064 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 2074 may also be provided andconnected to device 2050 through expansion interface 2072, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 2074 may provide extra storage spacefor device 2050, or may also store applications or other information fordevice 2050. Specifically, expansion memory 2074 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, expansionmemory 2074 may be provide as a security module for device 2050, and maybe programmed with instructions that permit secure use of device 2050.In addition, secure applications may be provided via the SIMM cards,along with additional information, such as placing identifyinginformation on the SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 2064, expansionmemory 2074, or memory on processor 2052, that may be received, forexample, over transceiver 2068 or external interface 2062.

Device 2050 may communicate wirelessly through communication interface2066, which may include digital signal processing circuitry wherenecessary. Communication interface 2066 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 2068. In addition, short-range communication may occur, suchas using a Bluetooth, Wi-Fi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 2070 mayprovide additional navigation- and location-related wireless data todevice 2050, which may be used as appropriate by applications running ondevice 2050.

Device 2050 may also communicate audibly using audio codec 2060, whichmay receive spoken information from a user and convert it to usabledigital information. Audio codec 2060 may likewise generate audiblesound for a user, such as through a speaker, e.g., in a handset ofdevice 2050. Such sound may include sound from voice telephone calls,may include recorded sound (e.g., voice messages, music files, etc.) andmay also include sound generated by applications operating on device2050.

The computing device 2050 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 2080. It may also be implemented as part of a smartphone 2082, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

In some implementations, the computing devices depicted in FIG. 20 caninclude sensors that interface with a virtual reality (VR) headset 2090,or head mounted display device 2090. For example, one or more sensorsincluded on a computing device 2050 or other computing device depictedin FIG. 20, can provide input to VR headset 2090 or in general, provideinput to a VR space. The sensors can include, but are not limited to, atouchscreen, accelerometers, gyroscopes, pressure sensors, biometricsensors, temperature sensors, humidity sensors, and ambient lightsensors. The computing device 2050 can use the sensors to determine anabsolute position and/or a detected rotation of the computing device inthe VR space that can then be used as input to the VR space. Forexample, the computing device 2050 may be incorporated into the VR spaceas a virtual object, such as a controller, a laser pointer, a keyboard,a weapon, etc. Positioning of the computing device/virtual object by theuser when incorporated into the VR space can allow the user to positionthe computing device so as to view the virtual object in certain mannersin the VR space. For example, if the virtual object represents a laserpointer, the user can manipulate the computing device as if it were anactual laser pointer. The user can move the computing device left andright, up and down, in a circle, etc., and use the device in a similarfashion to using a laser pointer.

In some implementations, one or more input devices included on, orconnect to, the computing device 2050 can be used as input to the VRspace. The input devices can include, but are not limited to, atouchscreen, a keyboard, one or more buttons, a trackpad, a touchpad, apointing device, a mouse, a trackball, a joystick, a camera, amicrophone, earphones or buds with input functionality, a gamingcontroller, or other connectable input device. A user interacting withan input device included on the computing device 2050 when the computingdevice is incorporated into the VR space can cause a particular actionto occur in the VR space.

In some implementations, a touchscreen of the computing device 2050 canbe rendered as a touchpad in VR space. A user can interact with thetouchscreen of the computing device 2050. The interactions are rendered,in VR headset 2090 for example, as movements on the rendered touchpad inthe VR space. The rendered movements can control virtual objects in theVR space.

In some implementations, one or more output devices included on thecomputing device 2050 can provide output and/or feedback to a user ofthe VR headset 2090 in the VR space. The output and feedback can bevisual, tactical, or audio. The output and/or feedback can include, butis not limited to, vibrations, turning on and off or blinking and/orflashing of one or more lights or strobes, sounding an alarm, playing achime, playing a song, and playing of an audio file. The output devicescan include, but are not limited to, vibration motors, vibration coils,piezoelectric devices, electrostatic devices, light emitting diodes(LEDs), strobes, and speakers.

In some implementations, the computing device 2050 may appear as anotherobject in a computer-generated, 3D environment. Interactions by the userwith the computing device 2050 (e.g., rotating, shaking, touching atouchscreen, swiping a finger across a touch screen) can be interpretedas interactions with the object in the VR space. In the example of thelaser pointer in a VR space, the computing device 2050 appears as avirtual laser pointer in the computer-generated, 3D environment. As theuser manipulates the computing device 2050, the user in the VR spacesees movement of the laser pointer. The user receives feedback frominteractions with the computing device 2050 in the VR environment on thecomputing device 2050 or on the VR headset 2090.

In some implementations, a computing device 2050 may include atouchscreen. For example, a user can interact with the touchscreen in aparticular manner that can mimic what happens on the touchscreen withwhat happens in the VR space. For example, a user may use apinching-type motion to zoom content displayed on the touchscreen. Thispinching-type motion on the touchscreen can cause information providedin the VR space to be zoomed. In another example, the computing devicemay be rendered as a virtual book in a computer-generated, 3Denvironment. In the VR space, the pages of the book can be displayed inthe VR space and the swiping of a finger of the user across thetouchscreen can be interpreted as turning and/or flipping a page of thevirtual book. As each page is turned and/or flipped, in addition toseeing the page contents change, the user may be provided with audiofeedback, such as the sound of the turning of a page in a book.

In some implementations, one or more input devices in addition to thecomputing device (e.g., a mouse, a keyboard) can be rendered in acomputer-generated, 3D environment. The rendered input devices (e.g.,the rendered mouse, the rendered keyboard) can be used as rendered inthe VR space to control objects in the VR space.

Computing device 2000 is intended to represent various forms of digitalcomputers and devices, including, but not limited to laptops, desktops,workstations, personal digital assistants, servers, blade servers,mainframes, and other appropriate computers. Computing device 2050 isintended to represent various forms of mobile devices, such as personaldigital assistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the specification.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A method, comprising: detecting, by a firstsensor of a touchpad, an input at an input surface of the touchpad;associating the detected input with an input area of the touchpad;detecting, by a second sensor of the touchpad, a contact at the inputsurface of the touchpad; associating the detected contact with acancellation area of the touchpad; transmitting, by a first hapticengine of the touchpad display, a first haptic feedback signal inresponse to the detecting of the input in the input area; andtransmitting, by a second haptic engine of the touchpad display, asecond haptic feedback signal in response to the detecting of thecontact in the contact area, the second haptic feedback signal being aninverse of the first haptic feedback signal.
 2. The method of claim 1,wherein transmitting the second haptic feedback signal includes:determining a time delay for transmitting the second haptic feedbacksignal based on a position of the cancellation area on the touchpad, thetime delay defining a period of time; detecting that the period of timehas elapsed after transmitting the first haptic feedback signal; andtransmitting the second haptic feedback signal after detecting that theperiod of time has elapsed after transmitting the first haptic feedbacksignal.
 3. The method of claim 2, wherein determining the period of timedefining the time delay includes: detecting a first distance d1 betweenthe first haptic engine and the cancellation area; detecting a seconddistance d2 between the second haptic engine and the cancellation area;and determining a difference Δd between the first distance d1 and thesecond distance d2.
 4. The method of claim 3, wherein determining theperiod of time defining the time delay also includes: dividing thedifference Ad by a propagation speed v of the first haptic feedbacksignal and the second haptic feedback signal through the touchpad; andsetting the period of time equal to the quotient of the difference Addivided by the propagation speed v.
 5. The method of claim 3, whereindetermining the period of time defining the time delay also includes:determining a third distance d3 between the input area and thecancellation area; dividing the third distance d3 by a propagation speedv of the first haptic feedback signal and the second haptic feedbacksignal through the touchpad; and setting the period of time equal to thequotient of the third distance d3 divided by the propagation speed v. 6.The method of claim 1, wherein detecting the input at the input surfaceof the touchpad includes: detecting, by one or more pressure sensors ofthe touchpad, a touch input at the input surface of the touchpad;detecting an input force associated with the detected touch input; anddetecting a gesture associated with the detected touch input.
 7. Themethod of claim 6, wherein associating the detected input with the inputarea of the touchpad includes: detecting at least one characteristicassociated with the detected gesture; matching the detected gesture withan input command based on the detected at least one characteristic andthe detected input force; and setting a portion of the touchpad at whichthe gesture is detected as the input area.
 8. The method of claim 7,wherein the at least one characteristic includes at least one of adetected touch input pattern detected on the input surface of thetouchpad, a period of time for which the detected gesture is sustainedon the input surface of the touchpad, and the detected input force. 9.The method of claim 1, wherein detecting the contact at the inputsurface of the touchpad includes: detecting, by a multi-touch sensor ofthe touchpad, the contact at the input surface of the touchpad; anddetecting a contact area associated with the detected contact on theinput surface.
 10. The method of claim 9, wherein associating thedetected contact with the cancellation area of the touchpad includes:matching the detected contact and the associated contact area with aknown multi-touch contact; and setting a portion of the touchpad atwhich the contact area and associated contact is detected as thecancellation area in response to the matching.
 11. The method of claim1, wherein transmitting the first haptic feedback signal in response tothe detecting of the input in the input area, and transmitting thesecond haptic feedback signal in response to the detecting of thecontact in the cancellation area includes: transmitting the first hapticfeedback signal such that the first haptic feedback signal propagatesoutward from the first haptic engine toward the input area; and after aperiod of time has elapsed from the transmitting the first hapticfeedback signal, transmitting the second haptic feedback signal suchthat the second haptic feedback signal propagates outward from thesecond haptic engine toward the cancellation area, wherein the secondhaptic feedback signal is the inverse of the first haptic feedbacksignal, such that the second haptic feedback signal cancels out thefirst haptic feedback signal as the first haptic feedback signalcontinues to propagate and the first haptic signal and the second hapticfeedback signal meet in the cancellation area.
 12. The method of claim11, wherein transmitting the first haptic feedback signal includestransmitting the first haptic signal at an increasing amplitude as thefirst haptic feedback signal propagates outward from the first hapticengine, and transmitting the second haptic feedback signal includestransmitting the second haptic signal at an increasing amplitude as thesecond haptic feedback signal propagates outward from the second hapticengine.
 13. The method of claim 12, wherein the amplitude of the firsthaptic feedback signal in the input area is greater than the amplitudeof the second haptic feedback signal in the input area, such that thesecond haptic feedback signal does not cancel out the first hapticsignal in the input area and the first haptic feedback signal generatesdetectable haptic feedback at the input area of the touchpad.
 14. Acomputer program product embodied on a non-transitory computer readablemedium, the computer readable medium having stored thereon a sequence ofinstructions which, when executed by a processor, causes the processorto execute a method, the method comprising: detecting, by a first sensorof a touchpad, an input at an input surface of the touchpad; associatingthe detected input with an input area of the touchpad; detecting, by asecond sensor of the touchpad display, a contact at the input surface ofthe touchpad; associating the detected contact with a cancellation areaof the touchpad; transmitting, by a first haptic engine of the touchpaddisplay, a first haptic feedback signal in response to the detecting ofthe input in the input area; detecting that a period of time has elapsedsince the transmitting of the first haptic feedback signal; andtransmitting, by a second haptic engine of the touchpad, a second hapticfeedback signal in response to the detecting of the contact in thecontact area, the second haptic feedback signal being an inverse of thefirst haptic feedback signal.
 15. The computer program product of claim14, wherein detecting that the period of time has elapsed since thetransmitting of the first haptic feedback signal includes determiningthe period of time, determining the period of time including: detectinga first distance d1 between the first haptic engine and the cancellationarea; detecting a second distance d2 between the second haptic engineand the cancellation area; determining a difference Ad between the firstdistance d1 and the second distance d2; dividing the difference Ad by apropagation speed v of the first haptic feedback signal and the secondhaptic feedback signal through the touchpad display; and setting theperiod of time equal to the quotient of the difference Ad divided by thepropagation speed v.
 16. The computer program product of claim 14,detecting that the set period of time has elapsed since the transmittingof the first haptic feedback signal includes determining the period oftime, determining the period of time including: determining a thirddistance d3 between the input area and the cancellation area; dividingthe third distance d3 by a propagation speed v of the first hapticfeedback signal and the second haptic feedback signal through thetouchpad; and setting the period of time equal to the quotient of thethird distance d3 divided by the propagation speed v.
 17. The computerprogram product of claim 14, wherein detecting the input at the inputsurface of the touchpad and associating the detected input with theinput area of the touchpad includes: detecting, by one or more pressuresensors of the touchpad, a touch input at the input surface of thetouchpad; detecting a gesture associated with the detected touch input;detecting an input force associated with the detected touch input;matching the detected gesture and the detected input force with an inputcommand; and setting a portion of the touchpad at which the gesture isdetected as the input area of the touchpad.
 18. The computer programproduct of claim 14, wherein detecting the contact at the input surfaceof the touchpad includes: detecting, by a multi-touch sensor of thetouchpad, the contact at the input surface of the touchpad; detecting acontact area associated with the detected contact on the input surface;matching the detected contact and the associated contact area with aknown multi-touch contact; and setting a portion of the touchpad atwhich the contact area and associated contact is detected as thecancellation area of the touchpad in response to the matching.
 19. Thecomputer program product of claim 14, wherein transmitting the firsthaptic feedback signal in response to the detecting of the input in theinput area, and transmitting the second haptic feedback signal inresponse to the detecting of the contact in the cancellation areaincludes: transmitting the first haptic feedback signal such that thefirst haptic feedback signal propagates outward from the first hapticengine toward the input area; and after the period of time has elapsed,transmitting the second haptic feedback signal such that the secondhaptic feedback signal propagates outward from the second haptic enginetoward the cancellation area, wherein the second haptic feedback signalis the inverse of the first haptic feedback signal, such that the secondhaptic feedback signal cancels out the first haptic feedback signal asthe first haptic feedback signal continues to propagate and the firsthaptic signal and the second haptic feedback signal meet in thecancellation area.
 20. The computer program product of claim 19, whereintransmitting the first haptic feedback signal includes transmitting thefirst haptic signal at an increasing amplitude as the first hapticfeedback signal propagates outward from the first haptic engine, andtransmitting the second haptic feedback signal includes transmitting thesecond haptic signal at an increasing amplitude as the second hapticfeedback signal propagates outward from the second haptic engine, andwherein the amplitude of the first haptic feedback signal in the inputarea is greater than the amplitude of the second haptic feedback signalin the input area, such that the second haptic feedback signal does notcancel out the first haptic signal in the input area and the firsthaptic feedback signal generates detectable haptic feedback at the inputarea of the touchpad.
 21. A computing device, comprising: a base; atouchpad extending from a first lateral side portion of the base to asecond lateral side portion of the base, the first lateral side portionof the base being opposite the second lateral side portion of the base,the touchpad including: a plurality of pressure sensors positioned at aninterior facing side of an input surface; a capacitive sensor positionedat the interior facing side of the input surface; and a plurality ofhaptic engines arranged at the interior facing side of the inputsurface; and a processor configured to control the plurality of hapticengines of the touchpad in response to inputs detected at the inputsurface, wherein the processor is configured to: associate an inputdetected by one or more of the plurality of pressure sensors with aninput area of the touchpad; associate a contact detected by thecapacitive sensor with a cancellation area of the touchpad; control afirst haptic engine, of the plurality of haptic engines, to transmit afirst haptic feedback signal in response to the detected input in theinput area; and control a second haptic engine, of the plurality ofhaptic engines, to transmit a second haptic feedback signal, after aperiod of time has elapsed, in response to the detected contact in thecancellation area, wherein the second haptic feedback signal is aninverse of the first haptic feedback signal.
 22. The computing device ofclaim 21, wherein the plurality of pressure sensors includes: a firstpressure sensor in a first corner portion of the touchpad; a secondpressure sensor in a second corner portion of the touchpad; a thirdpressure sensor in a third corner portion of the touchpad; and a fourthpressure sensor in a fourth corner portion of the touchpad; and theplurality of haptic engines includes: the first haptic engine at a firstlateral side portion of the touchpad; a third haptic engine at a secondlateral side portion of the touchpad, the second lateral side portion ofthe touchpad being opposite the first lateral side portion of thetouchpad; and the second haptic engine at a central portion of thetouchpad, between the first haptic engine and the third haptic engine.23. The computing device of claim 21, wherein, in controlling the firsthaptic engine, the processor is configured to: determine a firstdistance d1 between the first haptic engine and the cancellation area;determine a second distance d2 between the second haptic engine and thecancellation area; determine a difference Ad between the first distanced1 and the second distance d2;and set the period of time equal to aquotient of the difference Ad divided by a propagation speed v of thefirst haptic feedback signal and the second haptic feedback signalthrough the touchpad.
 24. The computing device of claim 21, wherein intransmitting the first haptic feedback signal in response to thedetecting of the input in the input area, and transmitting the secondhaptic feedback signal in response to the detecting of the contact inthe cancellation area, the processor is configured to control the firsthaptic engine and the second haptic engine to: transmit the first hapticfeedback signal such that the first haptic feedback signal propagatesoutward from the first haptic engine toward the input area; and afterthe period of time has elapsed, transmit the second haptic feedbacksignal such that the second haptic feedback signal propagates outwardfrom the second haptic engine toward the cancellation area, wherein thesecond haptic feedback signal is the inverse of the first hapticfeedback signal, such that the second haptic feedback signal cancels outthe first haptic feedback signal as the first haptic feedback signalcontinues to propagate and the first haptic signal and the second hapticfeedback signal meet in the cancellation area.